home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 22 / CU Amiga Magazine's Super CD-ROM 22 (1998)(EMAP Images)(GB)[!][issue 1998-05].iso / PowerPC / Programming / PPCSmallEiffel / bin_c / short16.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-01-16  |  12.1 KB  |  449 lines

  1. /*
  2. -- ANSI C code generated by :
  3. -- SmallEiffel The GNU Eiffel Compiler -- Release (- 0.82)      --
  4. -- Copyright (C), 1994-98 - LORIA - UHP - CRIN - INRIA - FRANCE --
  5. -- Dominique COLNET and Suzanne COLLIN -    colnet@loria.fr     --
  6. --                 http://www.loria.fr/SmallEiffel              --
  7. */
  8. #include "short.h"
  9. void r306put_integer(T306* C,int a1){
  10. /*IF*/if ((((T306*)C))->_verbose/*0*/) {
  11. r830put_integer(((T830*)(oBC1std_output)),a1);
  12. /*[IRF3.6flush*/{T830* C1=((T830*)(oBC1std_output));
  13. fflush(stdout);
  14. }/*]*/
  15. }
  16. /*FI*/}
  17. void r306w_put_string(T0* a1){
  18. r441put_string(((T441*)(oBC1std_error)),a1);
  19. /*[IRF3.6flush*/{T441* C1=((T441*)(oBC1std_error));
  20. fflush(stderr);
  21. }/*]*/
  22. }
  23. void r306put_character(T306* C,char a1){
  24. /*IF*/if ((((T306*)C))->_verbose/*0*/) {
  25. /*[IRF3.6put_character*/{T830* C1=((T830*)(oBC1std_output));
  26. char b1=a1;
  27. putc(b1,((FILE*)(stdout)));
  28. }/*]*/
  29. /*[IRF3.6flush*/{T830* C1=((T830*)(oBC1std_output));
  30. fflush(stdout);
  31. }/*]*/
  32. }
  33. /*FI*/}
  34. void r306w_put_character(char a1){
  35. /*[IRF3.6put_character*/{T441* C1=((T441*)(oBC1std_error));
  36. char b1=a1;
  37. putc(b1,((FILE*)(stderr)));
  38. }/*]*/
  39. /*[IRF3.6flush*/{T441* C1=((T441*)(oBC1std_error));
  40. fflush(stderr);
  41. }/*]*/
  42. }
  43. void r306w_put_integer(int a1){
  44. r441put_integer(((T441*)(oBC1std_error)),a1);
  45. /*[IRF3.6flush*/{T441* C1=((T441*)(oBC1std_error));
  46. fflush(stderr);
  47. }/*]*/
  48. }
  49. T0* r368at(T368* C,T0* a1){
  50. T0* R=NULL;
  51. T0* _to_key=NULL;
  52. _to_key=X776to_key(a1);
  53. /*IF*/if (r199has(((T199*)((((T368*)C))->_feature_dictionary/*24*/)),_to_key)) {
  54. R=r199at(((T199*)((((T368*)C))->_feature_dictionary/*24*/)),_to_key);
  55. }
  56. /*FI*/return R;
  57. }
  58. /*No:RUN_CLASS.id*/
  59. T0* r368get_or_fatal_error(T368* C,T0* a1){
  60. T0* R=NULL;
  61. R=r368get_feature(C,a1);
  62. /*IF*/if ((R)==((void*)(NULL))) {
  63. r683add_position(X776start_position(a1));
  64. /*[IRF3.6append*/{T0* b1=((T0*)ms6_368);
  65. r7append(((T7*)(oBC683explanation)),b1);
  66. }/*]*/
  67. /*[IRF3.6append*/{T0* b1=X776to_string(a1);
  68. r7append(((T7*)(oBC683explanation)),b1);
  69. }/*]*/
  70. /*[IRF3.6append*/{T0* b1=((T0*)ms7_368);
  71. r7append(((T7*)(oBC683explanation)),b1);
  72. }/*]*/
  73. r683add_type((((T368*)C))->_current_type/*0*/,((T0*)ms67_470));
  74. r683print_as_fatal_error(((T683*)(oBC364eh)));
  75. }
  76. /*FI*/return R;
  77. }
  78. /*No:RUN_CLASS.fz_bad_assertion*/
  79. /*No:RUN_CLASS.running*/
  80. T0* r368runnable(T0* a1,T0* a2,T0* a3){
  81. T0* R=NULL;
  82. T0* _a=NULL;
  83. int _i=0;
  84. /*IF*/if (!(r608empty(((T608*)a1)))) {
  85. R=r608twin(((T608*)a1));
  86. _i=(((T608*)((T608*)R)))->_upper/*8*/;
  87. while (!((_i)==(0))) {
  88. r604push(((T604*)(oBC364small_eiffel)),a3);
  89. _a=r348to_runnable(((T348*)(r608item(((T608*)R),_i))),a2);
  90. /*IF*/if ((_a)==((void*)(NULL))) {
  91. r368error(r348start_position(((T348*)(r608item(((T608*)R),_i)))),((T0*)ms57_470));
  92. }
  93. else {
  94. /*[IRF3.6put*/{T608* C1=((T608*)R);
  95. T0* b1=_a;
  96. int b2=_i;
  97. ((((T608*)C1))->_storage/*0*/)[(b2)-((((T608*)C1))->_lower/*12*/)]=(b1);
  98. }/*]*/
  99. }
  100. /*FI*/r604pop(((T604*)(oBC364small_eiffel)));
  101. _i=(_i)-(1);
  102. }
  103. }
  104. /*FI*/return R;
  105. }
  106. void r368set_at_run_time(T368* C){
  107. int _i=0;
  108. T0* _rc=NULL;
  109. T0* _rcd=NULL;
  110. /*IF*/if (!((((T368*)C))->_at_run_time/*8*/)) {
  111. C->_at_run_time=1;
  112. C->_compile_to_c_done=0;
  113. r368add_running(C,(T0*)C);
  114. r604incr_magic_count(((T604*)(oBC364small_eiffel)));
  115. /*IF*/if (X291is_reference((((T368*)C))->_current_type/*0*/)) {
  116. _rcd=oBC604run_class_dictionary;
  117. _i=1;
  118. while (!((_i)>((((T250*)((T250*)_rcd)))->_count/*40*/))) {
  119. _rc=r250item(((T250*)_rcd),_i);
  120. /*IF*/if (r368is_a(C,_rc)) {
  121. r368add_running(((T368*)_rc),(T0*)C);
  122. }
  123. /*FI*/_i=(_i)+(1);
  124. }
  125. }
  126. /*FI*/}
  127. /*FI*/}
  128. int r368is_a(T368* C,T0* a1){
  129. int R=0;
  130. T0* _t2=NULL;
  131. T0* _t1=NULL;
  132. /*IF*/if ((a1)==((void*)(C))) {
  133. R=1;
  134. }
  135. else {
  136. _t1=(((T368*)C))->_current_type/*0*/;
  137. _t2=(((T368*)((T368*)a1)))->_current_type/*0*/;
  138. /*IF*/if ((X291is_basic_eiffel_expanded(_t1))&&(X291is_basic_eiffel_expanded(_t2))) {
  139. }
  140. else {
  141. R=X291is_a(_t1,_t2);
  142. /*IF*/if (!(R)) {
  143. /*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)(((T7*)(oBC683explanation)))))->_count)=(0);
  144. /*]*/
  145. r51clear(((T51*)(oBC683positions)));
  146. /*]*/
  147. }
  148. /*FI*/}
  149. /*FI*/}
  150. /*FI*/return R;
  151. }
  152. /*No:RUN_CLASS.actuals_clients*/
  153. /*No:RUN_CLASS.at_run_time*/
  154. T0* r368get_rf(T368* C,T0* a1){
  155. T0* R=NULL;
  156. T0* _tfg=NULL;
  157. T0* _constraint=NULL;
  158. T0* _trt=NULL;
  159. T0* _wbc2=NULL;
  160. T0* _wbc=NULL;
  161. T0* _fn2=NULL;
  162. T0* _fn1=NULL;
  163. int _is_current=0;
  164. T0* _target=NULL;
  165. _target=/*X135*/((T0*)(((T121*)((T121*)a1)))->_target/*8*/);
  166. _trt=X662result_type(_target);
  167. _is_current=X662is_current(_target);
  168. _fn1=X135feature_name(a1);
  169. _wbc=r627base_class(((T627*)(X776start_position(_fn1))));
  170. /*IF*/if ((_is_current)||(X291is_like_current(_trt))) {
  171. _fn2=r605new_name_of(((T605*)(X291base_class(_trt))),_wbc,_fn1);
  172. /*IF*/if ((_fn2)!=((void*)(_fn1))) {
  173. r683add_position(X776start_position(_fn1));
  174. R=r368get_or_fatal_error(C,_fn2);
  175. /*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)(((T7*)(oBC683explanation)))))->_count)=(0);
  176. /*]*/
  177. r51clear(((T51*)(oBC683positions)));
  178. /*]*/
  179. }
  180. else {
  181. R=r368get_or_fatal_error(C,_fn1);
  182. }
  183. /*FI*/}
  184.  else if (X291is_formal_generic(_trt)) {
  185. _tfg=_trt;
  186. if(NULL!=(_tfg))switch(((T0*)_tfg)->id) {
  187. case 283: 
  188. break;
  189. default:
  190. _tfg=NULL;
  191. };_constraint=r283constraint(((T283*)_tfg));
  192. /*IF*/if ((_constraint)==((void*)(NULL))) {
  193. R=r368get_or_fatal_error(C,_fn1);
  194. }
  195.  else if (!(X291is_a(_trt,_constraint))) {
  196. r683print_as_error(((T683*)(oBC364eh)));
  197. r683add_position(X776start_position(X135feature_name(a1)));
  198. /*[IRF3.6append*/{T0* b1=((T0*)ms3_368);
  199. r7append(((T7*)(oBC683explanation)),b1);
  200. }/*]*/
  201. r683print_as_fatal_error(((T683*)(oBC364eh)));
  202. }
  203. else {
  204. _wbc2=r627base_class(((T627*)(X291start_position(_constraint))));
  205. /*IF*/if (((_wbc2)==((void*)(_wbc)))||(r605is_subclass_of(((T605*)_wbc),_wbc2))) {
  206. _fn2=r605new_name_of(((T605*)(X291base_class(_trt))),X291base_class(_constraint),_fn1);
  207. R=r368get_or_fatal_error(C,_fn2);
  208. }
  209. else {
  210. R=r368get_or_fatal_error(C,_fn1);
  211. }
  212. /*FI*/}
  213. /*FI*/}
  214. else {
  215. R=r368get_or_fatal_error(C,_fn1);
  216. }
  217. /*FI*/X496add_client(R,(T0*)C);
  218. /*IF*/if ((((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0))&&(!(_is_current)))&&(!(X496is_exported_in(R,(((T605*)((T605*)_wbc)))->_base_class_name/*24*/)))) {
  219. r683add_position(X496start_position(R));
  220. /*[IRF3.6append*/{T0* b1=((T0*)ms4_368);
  221. r7append(((T7*)(oBC683explanation)),b1);
  222. }/*]*/
  223. /*[IRF3.6append*/{T0* b1=X776to_string(_fn1);
  224. r7append(((T7*)(oBC683explanation)),b1);
  225. }/*]*/
  226. r368error(X776start_position(X135feature_name(a1)),((T0*)ms5_368));
  227. }
  228. /*FI*/return R;
  229. }
  230. T0* r368get_feature(T368* C,T0* a1){
  231. T0* R=NULL;
  232. T0* _bc=NULL;
  233. T0* _fn_key=NULL;
  234. T0* _f=NULL;
  235. _fn_key=X776to_key(a1);
  236. /*IF*/if (r199has(((T199*)((((T368*)C))->_feature_dictionary/*24*/)),_fn_key)) {
  237. R=r199at(((T199*)((((T368*)C))->_feature_dictionary/*24*/)),_fn_key);
  238. }
  239. else {
  240. _bc=r368base_class(C);
  241. _f=r605look_up_for(((T605*)_bc),(T0*)C,a1);
  242. /*IF*/if ((_f)==((void*)(NULL))) {
  243. r368efnf(C,_bc,a1);
  244. }
  245. else {
  246. R=X359to_run_feature(_f,(((T368*)C))->_current_type/*0*/,a1);
  247. /*IF*/if ((R)!=((void*)(NULL))) {
  248. r368store_feature(C,R);
  249. }
  250. else {
  251. r368efnf(C,_bc,a1);
  252. }
  253. /*FI*/}
  254. /*FI*/}
  255. /*FI*/return R;
  256. }
  257. T0* r368class_with(T0* a1){
  258. T0* R=NULL;
  259. R=r604get_class(a1);
  260. return R;
  261. }
  262. void r368efnf(T368* C,T0* a1,T0* a2){
  263. /*[IRF3.6append*/{T0* b1=((T0*)ms9_368);
  264. r7append(((T7*)(oBC683explanation)),b1);
  265. }/*]*/
  266. /*[IRF3.6append*/{T0* b1=X291run_time_mark((((T368*)C))->_current_type/*0*/);
  267. r7append(((T7*)(oBC683explanation)),b1);
  268. }/*]*/
  269. /*[IRF3.6append*/{T0* b1=((T0*)ms10_368);
  270. r7append(((T7*)(oBC683explanation)),b1);
  271. }/*]*/
  272. /*[IRF3.6append*/{T0* b1=X776to_string(a2);
  273. r7append(((T7*)(oBC683explanation)),b1);
  274. }/*]*/
  275. /*[IRF3.6append*/{T0* b1=((T0*)ms11_368);
  276. r7append(((T7*)(oBC683explanation)),b1);
  277. }/*]*/
  278. /*[IRF3.6append*/{T0* b1=(((T451*)((T451*)((((T605*)((T605*)a1)))->_base_class_name/*24*/))))->_to_string/*0*/;
  279. r7append(((T7*)(oBC683explanation)),b1);
  280. }/*]*/
  281. r368error(X776start_position(a2),((T0*)ms67_470));
  282. }
  283. void r368make(T368* C,T0* a1){
  284. int _i=0;
  285. T0* _r=NULL;
  286. T0* _rc=NULL;
  287. T0* _rcd=NULL;
  288. T0* _run_string=NULL;
  289. C->_compile_to_c_done=1;
  290. C->_current_type=a1;
  291. {T187*n=malloc(sizeof(*n));
  292. *n=M187;
  293. r187with_capacity(n,16);
  294. C->_actuals_clients=(T0*)n;
  295. }
  296. _run_string=X291run_time_mark(a1);
  297. C->_id=r410item(((T410*)(r368id_provider())),_run_string);
  298. /*IF*/if ((((T604*)((T604*)(oBC364small_eiffel))))->_is_ready/*0*/) {
  299. r368warning(NULL,((T0*)ms1_368));
  300. }
  301. /*FI*//*IF*/if (r250has(((T250*)(oBC604run_class_dictionary)),_run_string)) {
  302. r368warning(NULL,((T0*)ms2_368));
  303. }
  304. /*FI*/r250put(((T250*)(oBC604run_class_dictionary)),(T0*)C,_run_string);
  305. {T199*n=malloc(sizeof(*n));
  306. *n=M199;
  307. r199with_capacity(n,64);
  308. C->_feature_dictionary=(T0*)n;
  309. }
  310. r604incr_magic_count(((T604*)(oBC364small_eiffel)));
  311. /*IF*/if (X291is_expanded(a1)) {
  312. r368set_at_run_time(C);
  313. r605check_expanded_with(((T605*)(X291base_class(a1))),a1);
  314. }
  315. else {
  316. _rcd=oBC604run_class_dictionary;
  317. _i=1;
  318. while (!((_i)>((((T250*)((T250*)_rcd)))->_count/*40*/))) {
  319. _rc=r250item(((T250*)_rcd),_i);
  320. /*IF*/if ((((((T368*)((T368*)_rc)))->_at_run_time/*8*/)&&(X291is_reference((((T368*)((T368*)_rc)))->_current_type/*0*/)))&&(r368is_a(((T368*)_rc),(T0*)C))) {
  321. r368add_running(C,_rc);
  322. }
  323. /*FI*/_i=(_i)+(1);
  324. }
  325. }
  326. /*FI*//*IF*/if (r590invariant_check(((T590*)(oBC364run_control)))) {
  327. r608clear(((T608*)(oBC368ci_collector)));
  328. r605collect_invariant(((T605*)(r368base_class(C))),(T0*)C);
  329. _r=r368runnable(oBC368ci_collector,(((T368*)C))->_current_type/*0*/,NULL);
  330. /*IF*/if ((_r)!=((void*)(NULL))) {
  331. {T673*n=malloc(sizeof(*n));
  332. *n=M673;
  333. r673from_runnable(n,_r);
  334. C->_invariant_assertion=(T0*)n;
  335. }
  336. }
  337. /*FI*/}
  338. /*FI*/}
  339. /*No:RUN_CLASS.nb_errors*/
  340. void r368store_feature(T368* C,T0* a1){
  341. T0* _rf_key=NULL;
  342. _rf_key=X776to_key(/*X496*/((T0*)(((T808*)((T808*)a1)))->_name/*16*/));
  343. /*IF*/if (r199has(((T199*)((((T368*)C))->_feature_dictionary/*24*/)),_rf_key)) {
  344. }
  345. else {
  346. r199put(((T199*)((((T368*)C))->_feature_dictionary/*24*/)),a1,_rf_key);
  347. r604incr_magic_count(((T604*)(oBC364small_eiffel)));
  348. }
  349. /*FI*/}
  350. /*No:RUN_CLASS.compile_to_c_done*/
  351. T0*oBC368ci_collector=NULL;
  352. void r368add_running(T368* C,T0* a1){
  353. /*IF*/if (((((T368*)C))->_running/*12*/)==((void*)(NULL))) {
  354. C->_running=se_ma396(1,a1);
  355. }
  356. else {
  357. /*IF*/if (!(r396fast_has(((T396*)((((T368*)C))->_running/*12*/)),a1))) {
  358. r396add_last(((T396*)((((T368*)C))->_running/*12*/)),a1);
  359. }
  360. /*FI*/}
  361. /*FI*/}
  362. void r368add_client(T368* C,T0* a1){
  363. int _i=0;
  364. _i=r187fast_index_of(((T187*)((((T368*)C))->_actuals_clients/*28*/)),a1);
  365. /*IF*/if ((_i)>((((T187*)((T187*)((((T368*)C))->_actuals_clients/*28*/))))->_upper/*8*/)) {
  366. r187add_last(((T187*)((((T368*)C))->_actuals_clients/*28*/)),a1);
  367. }
  368. /*FI*/}
  369. T0* r368get_feature_with(T368* C,T0* a1){
  370. T0* R=NULL;
  371. T0* _sfn=NULL;
  372. /*IF*/if (r199has(((T199*)((((T368*)C))->_feature_dictionary/*24*/)),a1)) {
  373. R=r199at(((T199*)((((T368*)C))->_feature_dictionary/*24*/)),a1);
  374. }
  375. else {
  376. {T446*n=malloc(sizeof(*n));
  377. *n=M446;
  378. r446make(n,a1,NULL);
  379. _sfn=(T0*)n;
  380. }
  381. R=r368get_feature(C,_sfn);
  382. }
  383. /*FI*/return R;
  384. }
  385. /*No:RUN_CLASS.collect_invariant*/
  386. T0* r368id_provider(void){
  387. if (fBC364id_provider==0){
  388. T0* R=NULL;
  389. fBC364id_provider=1;
  390. {T410*n=malloc(sizeof(*n));
  391. *n=M410;
  392. r410make(n);
  393. R=(T0*)n;
  394. }
  395. oBC364id_provider=R;}
  396. return oBC364id_provider;}
  397. /*No:RUN_CLASS.current_type*/
  398. T0* r368get_copy(T368* C){
  399. T0* R=NULL;
  400. R=r368get_rf_with(C,/*X359*/((T0*)/*(IRF4.6first_name*//*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T398*)((T398*)(r605get_copy(((T605*)(r368class_general())))))))->_names/*8*/))))->_list/*0*/)),1)/*)*//*)*/));
  401. return R;
  402. }
  403. /*No:RUN_CLASS.invariant_assertion*/
  404. /*No:RUN_CLASS.fz_dot*/
  405. int fBC364class_general=0;
  406. T0*oBC364class_general=NULL;
  407. T0* r368class_general(void){
  408. if (fBC364class_general==0){
  409. T0* R=NULL;
  410. fBC364class_general=1;
  411. R=r368class_with(((T0*)ms14_473));
  412. oBC364class_general=R;}
  413. return oBC364class_general;}
  414. void r368error(T0* a1,T0* a2){
  415. r683add_position(a1);
  416. r683error(((T683*)(oBC364eh)),a2);
  417. }
  418. T0* r368base_class(T368* C){
  419. T0* R=NULL;
  420. R=X291base_class((((T368*)C))->_current_type/*0*/);
  421. return R;
  422. }
  423. /*No:RUN_CLASS.feature_dictionary*/
  424. T0* r368get_rf_with(T368* C,T0* a1){
  425. T0* R=NULL;
  426. T0* _wbc=NULL;
  427. T0* _fn2=NULL;
  428. _wbc=r627base_class(((T627*)(X776start_position(a1))));
  429. _fn2=r605new_name_of(((T605*)(r368base_class(C))),_wbc,a1);
  430. /*IF*/if ((_fn2)!=((void*)(a1))) {
  431. r683add_position(X776start_position(a1));
  432. R=r368get_or_fatal_error(C,_fn2);
  433. /*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)(((T7*)(oBC683explanation)))))->_count)=(0);
  434. /*]*/
  435. r51clear(((T51*)(oBC683positions)));
  436. /*]*/
  437. }
  438. else {
  439. R=r368get_or_fatal_error(C,_fn2);
  440. }
  441. /*FI*/return R;
  442. }
  443. /*No:RUN_CLASS.us_general*/
  444. void r368warning(T0* a1,T0* a2){
  445. r683add_position(a1);
  446. r683warning(((T683*)(oBC364eh)),a2);
  447. }
  448.  
  449.